// 实现这个项目的构建任务
const { src, dest, series, parallel, watch } = require('gulp')

const clean = require('./clean')
const style = require('./style')
const script = require('./script')
const page = require('./page')
const image = require('./image')
const font = require('./font')
const extra = require('./extra')
const serve = require('./serve')
const useref = require('./useref')

// 开发阶段可以不对 image, font 做处理，因为它们是画质无损的压缩，可以忽略，减少开发阶段的构建次数
const compile = parallel(style, script, page)

// build任务执行顺序：
// 1.清除dist、temp目录 
// 2.对src目录中的js、css、html做处理，放入temp目录
// 3.执行useref任务，将压缩后的js、css、html放入dist
// 4.将src中的图片、文字文件压缩，与public一起放入dist
const build = series(
    clean,
    parallel(
        series(
            compile, 
            useref
        ), 
        image, 
        font, 
        extra
    )
)

// develop任务执行顺序
// 1.对src目录中的js、css、html做处理，放入temp目录
// 2.启动服务器并监听文件变化，热更新
const develop = series(compile, serve)

module.exports = {
    clean,
    build,
    develop
}